home *** CD-ROM | disk | FTP | other *** search
-
-
- {*
- * arraycmp - a general-purpose array comparer in Pascal
- *}
-
- type
- cf_t = function (var x, y) : integer;
-
- function arraycmp(var s1, s2; n, size : word; cf : cf_t)
- : integer;
- type
- bytes = array [0 .. 65534] of byte;
- var
- cmp : integer;
- i : word;
- begin
- cmp := 0;
- i := 0;
- while (i < n * size) and (cmp = 0) do
- begin
- cmp := cf(bytes(s1)[i], bytes(s2)[i]);
- i := i + size;
- end;
- arraycmp := cmp;
- end;
-
- {*
- * Some element comparison functions
- *}
- function intcf(var p, q) : integer; far;
- begin
- intcf := integer(p) - integer(q);
- end;
-
- function realcf(var p, q) : integer; far;
- begin
- if real(p) < real(q) then
- realcf := -1
- else if real(p) < real(q) then
- realcf := 0
- else
- realcf := 1;
- end;
-
- function strcf(var p, q) : integer; far;
- begin
- if string(p) < string(q) then
- strcf := -1
- else if string(p) < string(q) then
- strcf := 0
- else
- strcf := 1;
- end;
-
-